The present invention concerns data transfer between devices and particularly a slip buffer used for synchronizing data transfer between two devices.
Data exchange between devices generally requires at least one device to transmit the data and at least one device to receive the data. In one common method of data transmission, the transmitting device uses a clock signal in the transmission of the data. This transmission clock signal is recovered by the receiving device and used by the receiving device to capture the data signal. The data, once recovered is processed by the receiving device in synchronization to an internal dock of the receiving device.
When the transmission clock signal has a frequency which is the same as the frequency of the internal clock used by the receiving device to process the data, data transmission and reception can proceed smoothly. However, often the transmission clock signal will vary slightly from the internal clock of the receiving device. In this case, it is necessary to provide some means of synchronizing the transfer of data. Otherwise, data will be lost when the receiving device cannot process the data as fast as the transmitting device is sending it, or incorrect data will be processed because the transmitting device cannot send data as fast as data is processed.
In order to allow for variations in frequency between the transmission clock signal and the internal clock signal of a receiving device, a slip buffer may be used by the receiving device. When the receiving device cannot process the data as fast as the transmitting device is sending it, the slip data buffer will discard some of the data that is sent. When the transmitting device cannot send data as fast as data is processed by the receiving device, the slip buffer will repeat previous data to allow the slower transmitting device to catch up. The slip buffer performs these events in a controlled manner and issues a notification when a slip has occurred.
In order to design a versatile and effective slip buffer, several obstacles need to be overcome. For example, when the data transmitted is organized into blocks it is desirable to take into account the boundaries of data blocks and to take these boundaries into account when a slip takes place.